import lRequest from '../index'

// 账号输入类型限制
interface IAccount {
  name: string
  password: string
}
// 拿到的结果的类型
interface ILoginResult {
  id: number
  name: string
  token: string
}
// 请求到的整体的类型
interface IDataType<T = any> {
  code: number
  data: T
}
// 接口枚举 有几种
enum LoginAPI {
  AccountLogin = '/login',
  UsersInfo = '/users/',
  UserMenus = '/role/'
}

// 发送请求进行登录
export function accountLoginRequest(account: IAccount) {
  // 这种写法相当于 ILoginResult 是前面那个的子类型 泛型
  return lRequest.post<IDataType<ILoginResult>>({
    url: LoginAPI.AccountLogin,
    data: account
  })
}

// 通过id请求对应用户
export function requestUserInfoById(id: number) {
  return lRequest.get({
    url: LoginAPI.UsersInfo + id,
    showLoading: false
  })
}

// 请求用户 角色菜单列表
export function requestUserMenuByRoleId(id: number) {
  return lRequest.get<IDataType>({
    url: LoginAPI.UserMenus + id + '/menu',
    showLoading: false
  })
}
